import os
from pathlib import Path
import re

# 下面这两个是用于将列表文件名转成拼音进行排序。
# 因为 python 无法将列表按拼音排序
# 所以运行此脚本前，请先 pip install pypinyin
# https://segmentfault.com/q/1010000011678437?sort=created
#from itertools import chain
#from pypinyin import pinyin, Style



def 输出列表(父路径, 递归层级, 索引文件):

    新的递归层级 = 递归层级 + 1

    新的父路径 = 父路径

    前置空格 = 2 * (递归层级 - 1) * " "

    if os.path.isfile(父路径):

        if re.match(".+\.md", 父路径) and ( not re.match(".+index.md", 父路径)):

            正斜杠路径 = Path(父路径).as_posix()

            (路径, 带扩展的文件名) = os.path.split(正斜杠路径)

            (不带扩展的文件名, 扩展名) = os.path.splitext(带扩展的文件名)

            print(不带扩展的文件名)

            索引文件.write(前置空格 + "- " + "<a href=\"%s\">%s</a>" % (正斜杠路径, 不带扩展的文件名) + "\r\n")

    elif os.path.isdir(父路径):

        if re.match(".+\.textbundle$", 父路径):

            正斜杠路径 = Path(父路径).as_posix()

            (路径, 带扩展的bundle名) = os.path.split(正斜杠路径)

            (不带扩展的bundle名, 扩展名) = os.path.splitext(带扩展的bundle名)

            print(不带扩展的bundle名)
            
            print(前置空格 + "- " + Path(父路径).as_posix() + "/text.md")

            索引文件.write(前置空格 + "- " + "<a href=\"%s/text.md\">%s</a>" % (正斜杠路径, 不带扩展的bundle名) + "\r\n")

        else:

            if not re.match("^\.$", 父路径):

                正斜杠路径 = Path(父路径).as_posix()

                (路径, 带扩展的文件名) = os.path.split(正斜杠路径)
                
                print(前置空格 + "- " + "父路径是：" +带扩展的文件名)

                索引文件.write(前置空格 + "- " + 带扩展的文件名 + "\r\n")
            
            目录下的子文件 = os.listdir(父路径)
            
            目录下的子文件.sort()

            #目录下的子文件.sort(key=转拼音) # 这里其实需要对文件列表做一个按拼音的排序，但是还没做。

            for 子路径 in 目录下的子文件:

                新的父路径 = os.path.join(父路径,子路径)

                输出列表(新的父路径, 新的递归层级, 索引文件)

    return 0

'''
def 转拼音(文字):
    return ''.join(chain.from_iterable(pinyin(文字, style=Style.TONE3)))
'''



if os.path.exists("index.md"):

    os.remove("index.md")

索引文件 = open("index.md","w+",encoding="utf8")



递归层级 = 0

输出列表(".", 递归层级, 索引文件)

